package ref;

import bd.ConBdSqlS;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import master.NfeItensTableModel;
import nfe.Nfe;
import nfeitens.NfeItens;
import util.Util;

/**
 *
 * @author Camilo
 */
public class ProdutoReferenciaDao {

  protected Connection con;

  public ProdutoReferenciaDao() throws SQLException {
    this.con = ConBdSqlS.getConexao();
  }

  public ProdutoReferencia getProdRef(String ref, String forn) throws SQLException {
    ProdutoReferencia pr = new ProdutoReferencia();//instancia um novo objeto
    //    Código SQL
    String sql = "SELECT     Id, Fornecedor, Produto, Referencia "
            + "FROM ProdutoReferencia "
            + "WHERE (Referencia LIKE ?) AND (Fornecedor LIKE ?)"
            + "ORDER BY id desc;";

    PreparedStatement stmt = this.con.prepareStatement(sql);
    stmt.setString(1, ref);//Define o critério da consulta
    stmt.setString(2, forn);
    ResultSet rs = stmt.executeQuery();//executa a consulta SQL
//    percorre os registros da tabela e seta os valores das classes
    while (rs.next()) {
      pr.setId(rs.getInt("id"));
      pr.setFornecedor(rs.getString("fornecedor"));
      pr.setProduto(rs.getString("produto"));
      pr.setReferencia(rs.getString("referencia"));
    }
//    fecha as conexões
    rs.close();
    stmt.close();

    return pr;
  }

  public void adicionar(String barras,String ref, Nfe nfe) throws SQLException {
    NumberFormat nfen = new DecimalFormat("000000");
    NumberFormat nfp = new DecimalFormat("00000000000000");
//    Código SQL
    String sql = "INSERT INTO produtoreferencia(Fornecedor, Produto, Referencia) "
            + "VALUES (?, ?, ?);";
    PreparedStatement stmt = con.prepareStatement(sql);

    //    Captura os valores dos atributos dos objetos e seta os parâmetros SQL
    String ent = nfen.format(Double.parseDouble(nfe.getEntidade()));
    stmt.setString(1, nfen.format(Double.parseDouble(nfe.getEntidade()))); // fornecedor (código do fornecedor)
    stmt.setString(2, nfp.format(Double.parseDouble(barras))); // documento
    stmt.setString(3, ref);
    //    Executa o código SQL
    stmt.execute();
//    Fecha a conexão
    stmt.close();
  }
}
